# coding: utf-8
import numpy as np
import math
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

data=[-35,10,20,30,40,50,60,106]
labels = ['Label']
flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}

# 使用matplotlib的cbook模块中的boxplot_stats函数计算箱线图的统计信息
# 包括最小值、第一四分位数、中位数、第三四分位数、最大值以及异常值等
stats = cbook.boxplot_stats(data,labels=labels)
print (stats)
k=75.0
q3=np.percentile(data,k,interpolation='linear')
print (k,'%:',q3)
index1=1+(len(data)-1)*k/100.0
print ('posision:',index1)

# 计算75%分位数的近似值
i=int(math.floor(index1))
fraction1=index1-i
print (i,fraction1)
myq3=data[i-1]+(data[i]-data[i-1])*fraction1
print ('myQi=',myq3)

#fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(6, 6), sharey=True)
# fig, axes = plt.subplots()
# axes.bxp(stats)

# 绘制箱线图
# 使用数据集绘制箱线图，notch=False表示不使用缺口表示置信区间，flierprops定义异常值的属性
plt.grid(True, linestyle = "-.", color = "black", linewidth = "0.4")   # 设置网格线
plt.boxplot(data,notch=False,flierprops=flierprops)

plt.show()